package model

import (
	"gorm.io/gorm"
	"smart-health-platforms/config"
	"time"
)

type Fase struct {
	ID        int32          `gorm:"primarykey" json:"id"`
	UserId    int32          `gorm:"index:idx_user_id;not null" json:"user_id"`             // 关联用户
	Image     string         `gorm:"type:text;not null" json:"image"`                       // 人脸图片URL/路径
	FaceToken string         `gorm:"uniqueIndex:idx_face_token;not null" json:"face_token"` // 百度FaceToken
	CreatedAt time.Time      `json:"created_at"`
	UpdatedAt time.Time      `json:"updated_at"`
	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` // 软删除
}

// 新增：按UserId查询该用户所有人脸（支持多张）
func (f *Fase) GetFasesByUserId() ([]Fase, error) {
	var fases []Fase
	if err := config.DB.Where("user_id = ?", f.UserId).Find(&fases).Error; err != nil {
		return nil, err
	}
	return fases, nil
}

// 新增：按ID查询单张人脸（用于更新/删除）
func (f *Fase) GetFaseById() error {
	return config.DB.Where("id = ? AND user_id = ?", f.ID, f.UserId).First(f).Error
}
func (f *Fase) TableName() string {
	return "fase"
}
func (f *Fase) GetFase() error {
	return config.DB.Model(&f).Where("image = ?", f.Image).Limit(1).Find(&f).Error
}
func (f *Fase) AddFase() error {
	return config.DB.Create(&f).Error
}
func (f *Fase) GetFaseByUserId() error {
	return config.DB.Model(&Fase{}).
		Where("user_id = ? AND deleted_at IS NULL", f.UserId).
		Limit(1).
		Find(f).Error
}
func (f *Fase) UpdateFase() error {
	return config.DB.Model(f).Updates(map[string]interface{}{
		"image":      f.Image,    // 假设只更新图片字段
		"updated_at": time.Now(), // 更新时间戳
	}).Error
}
func (f *Fase) DeletedFase() error {
	return config.DB.Model(f).Delete(&f).Error
}
